SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


CREATE PROCEDURE [dbo].[LIQAntiguedad]
@Agente INT,
@Servicio INT,
@Plaza INT,
@Resultado DECIMAL(18,4) OUTPUT,
@idLiquidacion INT,
@DiasALiquidar INT,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
AS 

SET NOCOUNT ON
SET DATEFORMAT dmy

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 17/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
-- 18/03/2008 - Se agrego que se tenga en cueta el concepto 44 Acuerdo Paritaria + el Sueldo Basico para el calculo de antiguedad
-- 18/11/2008 - Se agregó que guarde los años de antiguedad en @Anios DiasLiquidados
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DECLARE @ValorPuntoDocente DECIMAL(18,4)
DECLARE @SueldoBasico DECIMAL(18,4)
DECLARE @Afiliacion INT
DECLARE @horas INT
DECLARE @RegimenSalarial INT
DECLARE @Organizacion INT
DECLARE @SituacionRevista INT
DECLARE @NroError INT
DECLARE @PorcentajeSubsidio DECIMAL(18,4)
DECLARE @Anios INT
DECLARE @Meses INT
DECLARE @BonificacionPorAntiguedad DECIMAL(18,4)
DECLARE @OrganizacionLiquidadora INT
DECLARE @SubOrganizacion INT
DECLARE @HorasInformadas INT
DECLARE @FechaHastaDeAntiguedad DATETIME
DECLARE @HorasDelSistema INT
DECLARE @CabeceraDeLiquidacion INT

SELECT @SueldoBasico = SUM( MontoHaberes) FROM tb_RegistroDeLiquidaciones WHERE Liquidacion = @idLiquidacion and Servicio = @Servicio and Concepto IN (4, 44)

SELECT @HorasInformadas = 0, @FechaHastaDeAntiguedad = NULL, @HorasDelSistema = 0 FROM tb_Liquidaciones WHERE idLiquidacion = @idLiquidacion

-- Si existe registro de Antiguedad para el docente
IF EXISTS(SELECT * FROM tb_Antiguedades WHERE idAgente = @Agente)
BEGIN
	SELECT @HorasInformadas = DATEDIFF(HOUR, DATEADD(YEAR, -anios, DATEADD(MONTH, -meses, DATEADD(DAY, -dias, fechahasta))), fechahasta),
	@FechaHastaDeAntiguedad = DATEADD(DAY, 1, FechaHasta)
	FROM tb_Antiguedades WHERE idAgente = @Agente
END

--Si no existe fecha de antiguedad (es decir, no existe un registro de antiguedad)
IF @FechaHastaDeAntiguedad IS NULL
	SELECT @FechaHastaDeAntiguedad = MIN(FechaAlta) FROM tb_ServiciosAgentes WHERE Agente = @Agente

--Se calculan las horas que tiene dentro del sistema educativo
EXEC paCalcularAntiguedadDelAgenteEnHoras @Agente, @FechaHastaDeAntiguedad, @Hasta, @HorasDelSistema OUTPUT

--Pasamos todo a años
SELECT @Anios = (@HorasInformadas + @HorasDelSistema) / 8766

SELECT @Afiliacion = idAfiliacion FROM tb_Afiliaciones WHERE idAgente = @Agente
SELECT @horas= horas, @regimensalarial = regimensalarial, @SubOrganizacion = SubOrganizacion FROM tb_Plazas WHERE idPlaza = @Plaza
SELECT @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista FROM tb_ServiciosAgentes WHERE idservicioAgente =  @Servicio

If (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion) IS NOT NULL
	SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion

-- Agregado 13-10-2005
SELECT @BonificacionPorAntiguedad = @SueldoBasico * Porcentaje / 100  
	FROM tb_PorcentajesDeAntiguedades
	WHERE @Anios >=  AniosDesde AND @Anios < AniosHasta

IF @BonificacionPorAntiguedad IS NULL
	SELECT @BonificacionPorAntiguedad = 0.0

INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, DiasLiquidados,Organizacion, Reclamado, Servicio, SituacionRevista, SubOrganizacion)
VALUES (NULL, @Afiliacion, @Agente, NULL, 1, NULL, 7, NULL, NULL, NULL, NULL, NULL, NULL, @horas, 0, @idLiquidacion, 0, ISNULL(@BonificacionPorAntiguedad,0),@Anios, @Organizacion, NULL, @Servicio, @SituacionRevista, @SubOrganizacion)

SELECT @NroError = @@error

IF @NroError <> 0
BEGIN
	SELECT @CabeceraDeLiquidacion = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion

	INSERT INTO tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) VALUES
	(@Agente, 7, CONVERT(VARCHAR,@NroError), GETDATE(), @idLiquidacion, @Organizacion, @Servicio, @CabeceraDeLiquidacion, @NroError)
END
GO
